// 什么是 高阶函数 : 
//1. 如果一个函数的参数是一个函数
//2. 如果一个函数返回一个函数 当前这个函数也是一个高阶函数
// 高阶函数 的应用场景 : 为了稍后写 promise 做铺垫

// 写啦一个 业务代码 扩展当前的 业务当妈
function say() {
    console.log('say')
}
// 给某个方法 添加一个方法 在他执行之前调用

Function.prototype.before = function () {
    // let that = this
    // return function() {
    //     callback()
    //     that();
    // }
    return (...args) => {//剩余运算符 箭头函数没有 this 也没有 argument
        callback()
        this(...args); // 展开运算符
    }
}

say.before(function () {
    console.log('before say')
})

let beforeSay = say.before(function () {
    console.log('before say')
})
beforeSay('hello', 'world')